﻿//- Dùng tại frmDoanhThuLD

using System;
using System.Data.SqlClient;
using System.Data;
using System.Windows.Forms;
using DevExpress.XtraReports.UI;
using DevExpress.XtraEditors;
using prjKQXS_DLL;
using prjKQXS_DLL.Doanh_thu;

namespace prjKQXS_Report
{
    public partial class rptDTLuuDong_TH : XtraReport
    {
        //Cài đặt event
        public delegate void OnLoadCompleteHandler();
        public event OnLoadCompleteHandler OnLoadComplete;

        dsReports dsReports1 = new dsReports();

        #region rpt ============================================================================
        public rptDTLuuDong_TH()
        {
            InitializeComponent();
        }

        private void rptDTLuuDong_TH_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
        {
            int tuthang = 0;
            int denThang = 0;
            int nam = 0;

            tuthang = ((DateTime)pTuNgay.Value).Month;
            denThang = ((DateTime)pDenNgay.Value).Month;
            nam = ((DateTime)pTuNgay.Value).Year;

            fillTitle();

            clsDoanhThu cls = new clsDoanhThu();
            cls.OnAction += new clsDoanhThu.OnActionHandler(cls_OnAction);
            cls.OnError += new clsDoanhThu.OnErrorHandler(cls_OnError);

            DataTable dt = cls.loadData_rptDTLuuDong_TH((char)pMaDV.Value, (int)pDMCanBoID.Value, ((DateTime)pTuNgay.Value), ((DateTime)pDenNgay.Value));

            dsReports1.Tables.Remove("rptHoaHongByDaiLy1");
            dt.TableName = "rptHoaHongByDaiLy1";
            dsReports1.Tables.Add(dt);
            this.DataSource = dsReports1;
            this.DataMember = "rptHoaHongByDaiLy1";

            //Đoạn này để ẩn hiện cột Tỷ lệ % theo 2 trường hợp:
            //- Nếu xem 1 tháng thì hiện;
            //- Nếu xem nhiều tháng thì ẩn.
            bool isViewOneMonth = (((DateTime)pTuNgay.Value).Month == ((DateTime)pDenNgay.Value).Month)
                && (((DateTime)pTuNgay.Value).Year == ((DateTime)pDenNgay.Value).Year);  //Nếu là xem 1 tháng
            if (!isViewOneMonth)
            {
                xrTable2.DeleteColumn(xrtcTyLe1);
                xrTable2.HeightF = xrTable5.HeightF + 2;
                xrtcHH2.Text = "HH lũy tiến";
                xrTable17.DeleteColumn(xrtcTyLe2);
                xrTable13.DeleteColumn(xrtcTyLe3);
            }
        }

        int stt = 0;
        private void GroupHeader1_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
        {
            stt++;
            xrtcSTT.Text = stt.ToString();
        }
        #endregion rpt =========================================================================

        #region Sub and Func ===================================================================
        #region cls event --------------------------------------------
        private void cls_OnAction(SqlException e)
        {
            XtraMessageBox.Show("Một lỗi chưa được xử lý đã xảy ra. Chi tiết lỗi: \n" + e.Message, "SqlException", MessageBoxButtons.OK, MessageBoxIcon.Error);
            this.ClosePreview();
        }

        private void cls_OnError(Exception e)
        {
            XtraMessageBox.Show("Một lỗi chưa được xử lý đã xảy ra. Chi tiết lỗi: \n" + e.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
            this.ClosePreview();
        }
        #endregion ---------------------------------------------------

        private void fillTitle()
        {
            lblDonvi.Text = "PHÒNG XSKT " + pTenDV.Value.ToString().Trim().ToUpper();
            if ((int)pDMCanBoID.Value == -1) lblCanBo.Visible = false;
            else
            {
                lblCanBo.Text = "Người quản lý trực tiếp: " + pTenCB.Value;
                lblMau.Text = "Mẫu HH: 02LĐ-C";
            }

            if (((DateTime)pTuNgay.Value).Date == ((DateTime)pDenNgay.Value).Date)
            {
                lblNgayThang.Text = "Ngày " + ((DateTime)pTuNgay.Value).ToString("dd/MM/yyyy");
            }
            else
            {
                lblNgayThang.Text = "Từ ngày " + ((DateTime)pTuNgay.Value).ToString("dd/MM/yyyy") 
                    + " đến ngày " + ((DateTime)pDenNgay.Value).ToString("dd/MM/yyyy");
            }
        }
        #endregion Sub and Func ================================================================

        private void rptDTLuuDong_TH_AfterPrint(object sender, EventArgs e)
        {
            OnLoadComplete();
        }

        #region Đoạn này để không in ra các tổng HH bằng 0 -------------------------------------
        //Dùng chung cho xrtcDTTruyenThong, xrtcHH10TruyenThong, xrtcHHLuyTien, xrtcTongHHTruyenThong,
        //xrtcDTBoc, xrtcHH10Boc, xrtcHH2Boc, xrtcTongHHBoc,
        //xrtcDTLoto234, xrtcHHLoTo234, xrtcHHCapSo, xrtcTongDT, xrtcHHDaiLy
        decimal TruyenThong, hhtt, Hoa_Hong2, tonghhtt, Boc, hhboc, Hoa_Hong3, tonghhboc,
            LoTo234, HH_LoTo234, HH_CapSo, Tong_DoanhThu, Hoa_Hong;

        private void summaryGetResult(object sender, SummaryGetResultEventArgs e)
        {
            string dataMember = ((XRTableCell)sender).DataBindings[0].DataMember;
            int dot = dataMember.IndexOf('.');
            dataMember = dataMember.Substring(dot + 1, dataMember.Length - dot - 1);

            decimal value = 0;
            if (dataMember == "Truyen_Thong") value = TruyenThong;
            else if (dataMember == "hhtt") value = hhtt;
            else if (dataMember == "Hoa_Hong2") value = Hoa_Hong2;
            else if (dataMember == "tonghhtt") value = tonghhtt;
            else if (dataMember == "Boc") value = Boc;
            else if (dataMember == "hhboc") value = hhboc;
            else if (dataMember == "Hoa_Hong3") value = Hoa_Hong3;
            else if (dataMember == "tonghhboc") value = tonghhboc;
            else if (dataMember == "LoTo234") value = LoTo234;
            else if (dataMember == "HH_LoTo234") value = HH_LoTo234;
            else if (dataMember == "HH_CapSo") value = HH_CapSo;
            else if (dataMember == "Tong_DoanhThu") value = Tong_DoanhThu;
            else if (dataMember == "Hoa_Hong") value = Hoa_Hong;

            e.Handled = value == 0;
        }

        private void summaryReset(object sender, EventArgs e)
        {
            TruyenThong = 0;
            hhtt = 0;
            Hoa_Hong2 = 0;
            tonghhtt = 0;
            Boc = 0;
            hhboc = 0;
            Hoa_Hong3 = 0;
            tonghhboc = 0;
            LoTo234 = 0;
            HH_LoTo234 = 0;
            HH_CapSo = 0;
            Tong_DoanhThu = 0;
            Hoa_Hong = 0;
        }

        private void summaryRowChanged(object sender, EventArgs e)
        {
            TruyenThong += clsCommon.getDecimal(GetCurrentColumnValue("Truyen_Thong"));
            hhtt += clsCommon.getDecimal(GetCurrentColumnValue("hhtt"));
            Hoa_Hong2 += clsCommon.getDecimal(GetCurrentColumnValue("Hoa_Hong2"));
            tonghhtt += clsCommon.getDecimal(GetCurrentColumnValue("tonghhtt"));
            Boc += clsCommon.getDecimal(GetCurrentColumnValue("Boc"));
            hhboc += clsCommon.getDecimal(GetCurrentColumnValue("hhboc"));
            Hoa_Hong3 += clsCommon.getDecimal(GetCurrentColumnValue("Hoa_Hong3"));
            tonghhboc += clsCommon.getDecimal(GetCurrentColumnValue("tonghhboc"));
            LoTo234 += clsCommon.getDecimal(GetCurrentColumnValue("LoTo234"));
            HH_LoTo234 += clsCommon.getDecimal(GetCurrentColumnValue("HH_LoTo234"));
            HH_CapSo += clsCommon.getDecimal(GetCurrentColumnValue("HH_CapSo"));
            Tong_DoanhThu += clsCommon.getDecimal(GetCurrentColumnValue("Tong_DoanhThu"));
            Hoa_Hong += clsCommon.getDecimal(GetCurrentColumnValue("Hoa_Hong"));
        }
        #endregion -----------------------------------------------------------------------------
    }
}
